#pragma once
#include <ole2.h>

class CToadDropTarget : public IDropTarget
{
public:
    //
    CToadDropTarget(HWND hwnd);
    ~CToadDropTarget();

    // IDropTarget implementation:
    virtual HRESULT STDMETHODCALLTYPE DragEnter( 
        /* [unique][in] */ IDataObject *pDataObj,
        /* [in] */ DWORD grfKeyState,
        /* [in] */ POINTL pt,
        /* [out][in] */ DWORD *pdwEffect);

    virtual HRESULT STDMETHODCALLTYPE DragOver( 
        /* [in] */ DWORD grfKeyState,
        /* [in] */ POINTL pt,
        /* [out][in] */ DWORD *pdwEffect);

    virtual HRESULT STDMETHODCALLTYPE DragLeave(void);

    virtual HRESULT STDMETHODCALLTYPE Drop( 
        /* [unique][in] */ IDataObject *pDataObj,
        /* [in] */ DWORD grfKeyState,
        /* [in] */ POINTL pt,
        /* [out][in] */ DWORD *pdwEffect);

    // IUnknown implementation:
    virtual HRESULT STDMETHODCALLTYPE QueryInterface( 
        /* [in] */ REFIID riid,
        /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);

    virtual ULONG STDMETHODCALLTYPE AddRef(void);

    virtual ULONG STDMETHODCALLTYPE Release(void);

private:
    HWND m_hWnd;
    LONG m_nCount;
};